package br.edu.unifei.cct810.trabalho01.modelo.automato;

public class Transicao {

	private Estado origem = null;
	
	private Estado destino = null;
	
	private String simbolo = "";
	
	public Transicao(Estado origem, Estado destino, String simbolo){
		this.origem = origem;
		this.destino = destino;
		this.simbolo = simbolo;
	}
	
	public void defineEstadoOrigem(Estado origem){
		this.origem = origem;
	}
	
	public Estado retornaEstadoOrigem(){
		return this.origem;
	}
	
	public void defineEstadoDestino(Estado destino){
		this.destino = destino;
	}
	
	public Estado retornaEstadoDestino(){
		return this.destino;
	}
	
	public void defineSimbolo(String simbolo){
		this.simbolo = simbolo;
	}
	
	public String retornaSimbolo(){
		return this.simbolo;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((destino == null) ? 0 : destino.hashCode());
		result = prime * result + ((origem == null) ? 0 : origem.hashCode());
		result = prime * result + ((simbolo == null) ? 0 : simbolo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Transicao other = (Transicao) obj;
		if (destino == null) {
			if (other.destino != null)
				return false;
		} else if (!destino.equals(other.destino))
			return false;
		if (origem == null) {
			if (other.origem != null)
				return false;
		} else if (!origem.equals(other.origem))
			return false;
		if (simbolo == null) {
			if (other.simbolo != null)
				return false;
		} else if (!simbolo.equals(other.simbolo))
			return false;
		return true;
	}	
}
